package com.zenithmind.disk.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.disk.pojo.domain.Files;
import com.zenithmind.disk.pojo.dto.FileDTO;
import com.zenithmind.disk.pojo.vo.FileVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文件服务接口
 * 遵循接口隔离原则：将不同职责的方法分离到不同接口
 * 遵循单一职责原则：专注于文件基本操作
 */
public interface FilesService extends IService<Files> {

    /**
     * 上传文件
     * @param file 文件
     * @param userId 用户ID
     * @param parentId 父级目录ID
     * @return 文件信息
     */
    FileVO uploadFile(MultipartFile file, String userId, String parentId);

    /**
     * 创建文件夹
     * @param fileDTO 文件夹信息
     * @return 文件夹信息
     */
    FileVO createFolder(FileDTO fileDTO);

    /**
     * 列出文件和文件夹
     * @param userId 用户ID
     * @param parentId 父级目录ID
     * @return 文件列表
     */
    List<FileVO> listFiles(String userId, String parentId);

    /**
     * 重命名文件或文件夹
     * @param fileDTO 文件信息
     * @return 更新后的文件信息
     */
    FileVO renameFile(FileDTO fileDTO);

    /**
     * 移动文件或文件夹
     * @param fileId 文件ID
     * @param targetId 目标文件夹ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean moveFile(String fileId, String targetId, String userId);
}
